package ar.uba.is2.ec.matem.datos;

import java.util.Date;

import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;

import ar.uba.is2.common.loc.Coordenada;
import ar.uba.is2.common.mensaje.contenido.Dato;
import ar.uba.is2.common.mensaje.contenido.Identificador;
import ar.uba.is2.common.mensaje.contenido.TipoDato;

public class Medicion implements Dato {

	private Long id;
	private Identificador identificador = new Identificador();
	private Coordenada coordenada = new Coordenada();
	private String nombreTr;
	private String tipoMedicion;
	private Float valor;
	private long timestamp;
	
	public Medicion() {
		this.identificador.setTipoDato(TipoDato.MEDICION);
	}

	public Coordenada getCoordenada() {
		return this.coordenada;
	}

	public Date getFecha() {
		return new Date(this.timestamp);
	}

	public Long getId() {
		return id;
	}

	public String getNombreTr() {
		return nombreTr;
	}

	public String getTipoMedicion() {
		return tipoMedicion;
	}

	public Float getValor() {
		return valor;
	}

	public void setFecha(Date fecha) {
		this.timestamp = fecha.getTime();
	}

	public void setId(Long id) {
		this.id = id;
	}

	public void setNombreTr(String nombreTr) {
		this.nombreTr = nombreTr;
	}

	public void setCoordenada(Coordenada coordenada) {
		this.coordenada = coordenada;
		this.identificador.setCoordenada(coordenada);
	}

	public void setTipoMedicion(String tipoMedicion) {
		this.tipoMedicion = tipoMedicion;
		this.identificador.setValorIdentificatorio(tipoMedicion);
	}

	public void setValor(Float valor) {
		this.valor = valor;
	}

	@Override
	public String toString() {
		return ToStringBuilder.reflectionToString(this,
				ToStringStyle.SIMPLE_STYLE);
	}

	long getTimestamp() {
		return timestamp;
	}

	void setTimestamp(long timestamp) {
		this.timestamp = timestamp;
	}

	@Override
	public Identificador getIdentificador() {
		return this.identificador;
	}

	@Override
	public TipoDato getTipoDato() {
		return TipoDato.MEDICION;
	}
}
